package com.csgc.camera.widget.dialog.interpolator

import android.animation.TimeInterpolator
import kotlin.math.pow
import kotlin.math.sin


class BreatheInterpolator : TimeInterpolator {

    override fun getInterpolation(input: Float): Float {
        val x = (6 * input)
        val k = 1.0f / 3
        val t = 6
        val n = 1 //控制函数周期，这里取此函数的第一个周期

        val PI = 3.1416f
        var output = 0f

        if (x >= ((n - 1) * t) && x < ((n - (1 - k)) * t)){

            output = (0.5 * sin((PI / (k * t)) * ((x - k * t / 2) - (n - 1) * t).toDouble()) + 0.5).toFloat()

        }else if (x >= (n - (1 - k)) * t && x < n * t){
            val a = (0.5 * sin((PI / ((1 - k) * t)) * ((x - (3 - k) * t / 2) - (n - 1) * t)) + 0.5)
            output =  a.pow(2.0).toFloat()
        }


        return output

    }
}